<?php

class PersonaController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */    
        $session = new Zend_Session_Namespace('id_persona');
        $id_persona = $session->id_persona;  
        $this->view->top_persona = $this->view->getInfoPersona($id_persona);            
    }

    public function indexAction()
    {
        // action body
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $id = $auth->getIdentity()->id_utente;
            $admin = new Application_Model_DbTable_Administrator();

            $this->view->admin = $admin->getAdmin($id);
            $this->view->notifica = "";
                    
                
            $id_persona = $this->_getParam('id', 'nid');
            
            $session = new Zend_Session_Namespace('id_persona');
            $session->id_persona = $id_persona; 
            $this->view->top_persona = $this->view->getInfoPersona($id_persona);                        
                        
            require_once APPLICATION_PATH . '/models/Db/Persone_db.php';
            $db_obj = new Persone_db(); 
            $info_persona = $db_obj->getPersona($id_persona);
            
            $this->view->id_persona = $id_persona;
            
            $this->view->info_persona = $session->id_persona;
            $this->view->persona = $info_persona;          

        } else {
            $this->_forward('index', 'Auth');
        }        
    }


    /**
     * azione che mi permette di inserire una nuova persona
     * la view corrispondente visualizza il form
     */
    public function inserisciPersonaAction()
    {
        // action body
        $this->view->top_persona = '';
        
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $id = $auth->getIdentity()->id_utente;
            $admin = new Application_Model_DbTable_Administrator();
            $this->view->admin = $admin->getAdmin($id);

            $this->view->notifica = "";

            $request = $this->getRequest();            
            $form = new Application_Form_Inspersonafisica(array(
                        'id_admin' => $id,
                    ));
            $form->populate(array(
                'id_admin' => $id,
            ));

            if ($this->getRequest()->isPost()) {
                if ($form->isValid($request->getPost())) {

                    $ret = $this->_process_inspersona($form->getValues(), FALSE, FALSE);

                    if ($ret['ret']) {
                        $urlOptions = array('controller'=>'Index', 'action'=>'index', 'id' => $ret['id']);
                        $this->_helper->redirector->gotoRoute($urlOptions,'persona');
                    }else{
                        $urlOptions = array('controller'=>'Persona', 'action'=>'inserisci-persona');
                        //$this->_helper->redirector->gotoRoute($urlOptions,'persona');
                        $this->view->notifica = '<p style="padding:2px;">Ops, si è verificato un errore. Controlla che i campi siano corretti.<br />'.$ret['notifica'].'</p>';
                    }
                }
            }
            $this->view->form = $form;

        } else {
            $this->_forward('index', 'Auth');
        }
    }

    /**
     * @param array $values
     * @param bool $modifica
     * @param int $id_cliente
     * @return boolean 
     * 
     */
    public function _process_inspersona($values, $modifica, $id_cliente)
    {
        //dichiaro $ret, la variabile ritoprnata da questo metodo
        $ret = array('ret'=>true,'notifica'=>'', 'id' =>'noid');

        $nome                = $values['nome'];
        $cognome             = $values['cognome'];
        $data_nascita        = $values['data_nascita'];
        $cf                  = $values['cf'];        
        $comune_nascita      = intval($values['id_lib_comune_nascita']);
        $residenza           = intval($values['id_lib_comune_residenza']);
        $domicilio           = intval($values['id_lib_comune_domicilio']);
        $indirizzo_residenza = $values['indirizzo_residenza'];
        $indirizzo_domicilio = $values['indirizzo_domicilio'];
        $cap_residenza       = $values['cap_residenza'];
        $cap_domicilio       = $values['cap_domicilio'];
        $codice_fiscale      = $values['cf'];
        $sesso               = $values['sesso'];
        $cittandinanza_ita   = $values['cittadinanza_italiana'];
        $nazione             = $values['id_lib_nazione'];
        $titolo              = $values['titolo'];
        $id_entita           = "";//altro db
        $id_figura           = "";//altro db
        $note                = $values['note'];

        $id_utente_creazione_record = $values['id_admin'];
        $id_utente_modifica_record  = $values['id_admin'];
        $time_creazione_record      = 'now()';//$values['time_creazione_record'];
        $time_modifica_record       = 'now()';//$values['time_modifica_record'];
        $time_disattivazione_record = 'now()';//$values['time_disattivazione_record'];
        $time_eliminazione_record   = 'now()';//$values['time_eliminazione_record'];
        $record_attivo              = 1;

        //preparo i dati per l'inserimento nel db
        $data_persona_fisica = array(
            'nome'                    => $nome,
            'cognome'                 => $cognome,
            'data_nascita'            => $data_nascita,
            'codice_fiscale'          => $cf,
            'data_nascita'            => $data_nascita,
            'id_lib_comune_nascita'   => $comune_nascita,
            'id_lib_comune_residenza' => $residenza,
            'id_lib_comune_domicilio' => $domicilio,
            'indirizzo_residenza'     => $indirizzo_residenza,
            'indirizzo_domicilio'     => $indirizzo_domicilio,
            'codice_fiscale'          => $codice_fiscale,
            'sesso'                   => $sesso,
            'cittadinanza_italiana'   => $cittandinanza_ita,
            'id_lib_nazione'          => $nazione,
            'titolo'                  => $titolo,
            'id_entita'               => $id_entita,
            'id_figura'               => $id_figura, 
            'note'                    => $note,

            'id_utente_creazione_record' => $id_utente_creazione_record,
            'id_utente_modifica_record'  => $id_utente_modifica_record,
            'time_creazione_record'      => $time_creazione_record, 
            'time_modifica_record'       => $time_modifica_record,
            'time_disattivazione_record' => $time_disattivazione_record,
            'time_eliminazione_record'   => $time_eliminazione_record,
            'record_attivo'              => $record_attivo
        );

        $data_persona  = array(

            'tipo_persona' => 'fisica',

            'id_utente_creazione_record' => $id_utente_creazione_record,
            'id_utente_modifica_record'  => $id_utente_modifica_record,
            'time_creazione_record'      => $time_creazione_record, 
            'time_modifica_record'       => $time_modifica_record,
            'time_disattivazione_record' => $time_disattivazione_record,
            'time_eliminazione_record'   => $time_eliminazione_record,
            'record_attivo'              => $record_attivo            
        );

        $data_recapito = array();        

        try{
            require_once APPLICATION_PATH . '/models/Db/Persone_db.php';
            $db_obj = new Persone_db();


            if ($modifica==false){

                $esisteCF = $db_obj->esisteCF($codice_fiscale);
                if ($esisteCF){
                    $ret['ret'] = false;
                    $ret['notifica']="Il codice fiscale inserito è già assiocato a questa persona: ". $esisteCF['nome'] . " " . $esisteCF['cognome'] .".";
                }else {
                    $ID_new_persona = $db_obj->insPersonaFisica($data_persona_fisica,$data_persona,$data_recapito);
                    $ret['ret']=true;
                    $ret['id'] = $ID_new_persona;
                }
            }elseif ($modifica==true) {
                //$ret = $db_obj->aggiornaPersona($data, $id_utente_modifica);
                $ret['ret']=true;
            }


        } catch (Zend_Mail_Exception $e){
            echo $e->getMessage();
        }   
        return $ret;
    }

    public function modificaPersonaAction()
    {
        // action body
    }

    public function disattivaPersonaAction()
    {
        // action body
    }

    public function dettaglioPersonaAction()
    {
        // action body
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $id = $auth->getIdentity()->id_utente;
            $admin = new Application_Model_DbTable_Administrator();

            $this->view->admin = $admin->getAdmin($id);
            $this->view->notifica = "";
            

            $id_persona = $this->_getParam('id', 'nid');
            
            require_once APPLICATION_PATH . '/models/Db/Persone_db.php';
            $db_obj = new Persone_db();      
            
            $info_persona = $db_obj->getPersona($id_persona);            
            $this->view->persona = $info_persona;         

        } else {
            $this->_forward('index', 'Auth');
        }           
    }

    public function associaUnitaLocaleAction()
    {
        // action body
    }

    public function associaPersonaFisicaGiuridicaAction()
    {
        // action body
    }

    public function pannelloAction()
    {
        // action body
    }


}















